function Cadastro(url, formPesquisa, tabelaResultado, geraColunas) {
	this.url = url;
	this.formPesquisa = formPesquisa;
	this.tabelaResultado = tabelaResultado;
	this.geraColunas = geraColunas;
	
	this.selecionaLinha = function(id) {
		$("table > tbody > tr").removeClass("TabelaLinhaSelecionada");
		$("#linha" + id).addClass("TabelaLinhaSelecionada");
		
		var selecionado = $("#selecionado");
		
		selecionado.val(id);
	};
	
	this.geraLinha = function(item) {
		var items = [];
		
		items.push('<tr class="LinhaRegistro" id="linha' + item.id + '" onclick="cadastro.selecionaLinha(' + item.id + ')">');
		items.push(cadastro.geraColunas(item));
		items.push('</tr>');
		
		return items.join('');
	};
	
	this.montaTabela = function(lista) {
		var items = [];
		
		for (var i = 0; i < lista.length; i++) {
			items.push(this.geraLinha(lista[i]));
		}
		
		$('#' + tabelaResultado + ' > tbody').html(items.join(''));
	};
	
	this.pesquisa = function() {
		$.ajax({
			url: url,
			type: 'get',
			dataType: 'json',
			data: $('#' + formPesquisa).serialize(),
			async: false,
			success: function(data) {
				cadastro.montaTabela(data.list);
			}
		});
	};
}

cadastro = new Cadastro();

cadastroParticipante = new Cadastro(
		url = '../participante/pesquisa', 
		formPesquisa = 'formPesquisa', 
		tabelaResultado = 'tabelaResultado', 
		geraColunas = function(item) {
			var items = [];
			
			items.push('<td class="TabRegNome">' + item.nome + '</td>');
			items.push('<td class="TabRegDescricao">' + item.nomeUsuario + '</td>');
			items.push('<td class="TabRegData">' + item.email + '</td>');
			
			return items.join('');
		}
	);